package com.xk.springboot.task;

import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.stereotype.Component;

import java.util.concurrent.Future;

/**
 * @author:Teacher黄
 * @date:Created at 2020/04/13
 */
@Component
@Async
public class AsyncTask {


    public void task01() throws InterruptedException {
        // 测试耗时
        // 开始时间
        long start = System.currentTimeMillis();
        // 睡3秒
        Thread.sleep(3000L);
        // 结束时间
        long end = System.currentTimeMillis();
        System.out.println("task01耗时:"+(end-start));
    }

    public void task02() throws InterruptedException {
        // 测试耗时
        // 开始时间
        long start = System.currentTimeMillis();
        // 睡3秒
        Thread.sleep(2000L);
        // 结束时间
        long end = System.currentTimeMillis();
        System.out.println("task02耗时:"+(end-start));
    }

    public void task03() throws InterruptedException {
        // 测试耗时
        // 开始时间
        long start = System.currentTimeMillis();
        // 睡3秒
        Thread.sleep(1000L);
        // 结束时间
        long end = System.currentTimeMillis();
        System.out.println("task03耗时:"+(end-start));
    }


    public Future<String> task04() throws InterruptedException {
        // 测试耗时
        // 开始时间
        long start = System.currentTimeMillis();
        // 睡3秒
        Thread.sleep(4000L);
        // 结束时间
        long end = System.currentTimeMillis();
        // 执行结果
        String res = "task04耗时:"+(end-start);
        // 返回结果
        return new AsyncResult<>(res);
    }

    public Future<String> task05() throws InterruptedException {
        // 测试耗时
        // 开始时间
        long start = System.currentTimeMillis();
        // 睡3秒
        Thread.sleep(3000L);
        // 结束时间
        long end = System.currentTimeMillis();
        // 执行结果
        String res = "task05耗时:"+(end-start);
        // 返回结果
        return new AsyncResult<>(res);
    }

    public Future<String> task06() throws InterruptedException {
        // 测试耗时
        // 开始时间
        long start = System.currentTimeMillis();
        // 睡3秒
        Thread.sleep(1000L);
        // 结束时间
        long end = System.currentTimeMillis();
        // 执行结果
        String res = "task06耗时:"+(end-start);
        // 返回结果
        return new AsyncResult<>(res);
    }
}
